#include<iostream>
#include<signal.h>
#include<unistd.h>
#include<sys/types.h>
using namespace std;

void func(int sign)
{
    cout<<"get a sign number is "<<sign<<endl;
    unsigned int ret=alarm(5);//再设定一个闹钟
    cout<<"上次闹钟的剩余时间:"<<ret<<endl;
}

void test1()
{
    alarm(50);
    signal(SIGALRM,func);
    int cnt=0;
    while(true)
    {
        cout<<"pid:"<<getpid()<<' '<<"cnt:"<<cnt<<endl;
        sleep(1);
    }
}

void test2()//取消闹钟
{
    alarm(5);
    int cnt=0;
    while(true)
    {
        cnt++;
        if(cnt==1000000000)
        {
            unsigned int ret=alarm(0);
            cout<<"取消该闹钟,上次闹钟剩余时间为:"<<ret<<endl;
            break;
        }
    }
}

int main()
{
    test2();
    return 0;
}

// int cnt=0;

// void hander(int sign)
// {
//     cout<<"sign:"<<sign<<' '<<"cnt:"<<cnt<<endl;
//     exit(0);
// }

// int main()
// {
//     //int cnt=0;
//     alarm(1);//设定一个闹钟
//     signal(SIGALRM,hander);
//     while(true)
//     {
//         cnt++;
//         // cout<<cnt++<<' ';
//         // if(cnt%5==0)cout<<endl;
//         //cnt++;
//     }
//     return 0;
// }

// int main()
// {
//     int cnt=0;
//     while(true)
//     {
//         cout<<cnt++<<endl;
//         sleep(1);
//         if(cnt==5)
//         {
//             cout<<"Send yourself signal number nine"<<endl;
//             raise(9);
//         }
//     }
//     return 0;
// }

// void handler(int signal)
// {
//     cout<<"I picked up a signal. The number is "<<signal<<endl;
//     exit(2);
// }

// int main()
// {
//     //捕捉2号信号并执行handler函数
//     signal(2,handler);
//     while(true)
//     {
//         cout<<"Currently executing pid:"<<getpid()<<endl;
//         sleep(1);
//     }
//     return 0;
// }
